package br.com.classificadosonline.persistencia;

import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import br.com.classificadosonline.nucleo.Anuncio;

public class AnuncioDAO {
	
	private static final AnuncioDAO instance = null;
	
	public static AnuncioDAO getInstance() {
		if (instance == null){
		  instance = new AnuncioDAO();
		}
		return instance;
	}
	
	public static AnuncioDAO obterInstancia() {
		return (AnuncioDAO) Conexao.select("SELECT * FROM ANUNCIO");
	}
	
	public static void cadastrarAnuncio(String dataCadastro, String dataInicio, String dataFim, String conteudo, int numBoleto, int codStatus, int codPlano, int codCategoria, String cpf) {
		Conexao.update("INSERT INTO ANUNCIO VALUES ('" + dataCadastro + "', '" + dataInicio + "', '" + dataFim + "', '" + conteudo + "', " + numBoleto + ", " + codStatus + "," + codPlano + " ," + codCategoria + ", '" + cpf + "')");
	}
	
	public static void modificarAnuncio(int codigo, String dataInicio, String dataFim, String conteudo, int numBoleto, int codStatus, int codPlano, int codCategoria, String cpf) {
		Conexao.update("UPDATE ANUNCIO SET DATAINICIO='" + dataInicio + "', DATAFIM='" + dataFim + "', CONTEUDO='" + conteudo + "', NUMBOLETO=" + numBoleto + ", CODSTATUS=" + codStatus + ", CODPLANO=" + codPlano + ", CODCATEGORIA=" + codCategoria + ", CPF='" + cpf + "'  WHERE CODIGO=" + codigo);
	}	
	
	public static Anuncio buscarAnuncio(int codigo) {
		return buscar("SELECT * FROM ANUNCIO WHERE CODIGO=" + codigo).get(0);
	}
	
	public static List<Anuncio> buscarAnunciosPorCategoria(int codCategoria) {
		return buscar("SELECT * FROM ANUNCIO WHERE CODCATEGORIA=" + codCategoria);
	}
	
	public static List<Anuncio> buscarAnunciosPorConteudo(String conteudo) {
		return buscar("SELECT * FROM ANUNCIO WHERE CONTEUDO LIKE '%" + conteudo + "%'");
	}
	
	public static List<Anuncio> buscarAnunciosPorConteudoAndCategoria(String conteudo, int codCategoria) {
		return buscar("SELECT * FROM ANUNCIO WHERE CONTEUDO LIKE '%" + conteudo + "%' AND CODCATEGORIA=" + codCategoria);
	}
	
	public static List<Anuncio> buscar(String query) {
		ResultSet rs = null;
		List<Anuncio> lista = new ArrayList<Anuncio>();
		Anuncio anuncio = null;	
		Statement stmt;
		try {
			stmt = Conexao.conexao().createStatement();							
			rs = stmt.executeQuery(query);
			while (rs.next()) {
				anuncio = new Anuncio(rs.getInt("CODIGO"), rs.getString("DATACADASTRO"), rs.getString("DATAINICIO"), rs.getString("DATAFIM"), rs.getString("CONTEUDO"), rs.getInt("NUMBOLETO"), rs.getInt("CODSTATUS"), rs.getInt("CODPLANO"), rs.getInt("CODCATEGORIA"), rs.getString("CPF"));
				lista.add(anuncio);
			}
			stmt.close();
			Conexao.conexao().close();	
		} catch (SQLException e) {
		}
		return lista;
	}
	
	public static List<Anuncio> listarAnuncio() {
		return buscar("SELECT * FROM ANUNCIO");
	}
	
	public static void excluirAnuncio(int codigo) {
		Conexao.update("DELETE FROM ANUNCIO WHERE CODIGO=" + codigo);
	}
}
